| NPC - Script
|
';' Regel
Anweisungen mit () z.B. w(1000) brauchen kein ';' am Ende. Zuweisungen (r1=1;)
und '++',' --', (++r1;) enden mit ';' .
Kommentar: //.....: nur bis zum Ende der Zeile. /* von */ bis: auch über mehrere Zeilen.
[] Index: Die Nummer der Variable kann mit anderen Variablen indexiert werden.
Beispiel:
b1=1; //---- Schleife b1=1 - b1=8 ------ :1 f[b1]=b1+5; //.....Es werden f1 bis f8 zugewiesen. ++b1; if(b1<9)go(1)
|
| if - Abfrage
|
| if( expr) stat e stat; ?(expr)...
|
| expr= [Nicht]Variable (Vergleich (Variable|Zahl) [Logik])*.
|
| Beispiel:
|
| if(f1)f2=2; | expr(f1) '0' = False; '>=1' = True;
|
| if(~i1)f2=2; | '~' = Verneinung (nicht bei float)
|
| if(r7!=1)r8=0; e r8=1; | 'e' = else;
|
| ?(b1=3 & i2=-1 | r1=1)f2=2; |
'( )' in expr nicht möglich |
| |
|
| : Adresse
|
| 0-9 Sprung | a-z Unterprogramm
|
| max. 10 | max. 10
|
| Beispiel:
|
| go(3) ... :3 ++i1; ... | a{......} go(a)
|
| |
|
| :I{}
|
Interrupt ( Unterbrechung ) erhöht die Echtzeit- (Real-time) Fähigkeit des Scripts. Die Reaktion des Programms auf Änderungen der Hardware wird durch lange Programme oder Warte-Befehle wie w() oder pg() verlangsamt. Interrupt (wie ein Unterprogramm aufgebaut) wird nach jeder Programmzeile oder in Warte-Befehlen ausgeführt. Variable it bestimmt die Zeitabstände. Wird it nicht bestimmt oder ist it=0, wird das Interrupt so oft wie möglich ausgeführt.
Warte-Befehle wie w() oder pg() sollten hier vermieden werden. Auch lange Programm-Ketten sind nicht ratsam wenn it klein ist.
|
| Beispiel:
|
it=2500; //2,5 Sek. :I{p1=~p1;} ...
|
| |
|
| go(Adresse[ohne:])
|
| 0-9 Sprung | a-z Unterprogramm aufrufen.
|
| max. 10 | max. 10
|
| Beispiel:
|
| go(3) ... :3 ++i1; ... | :c{...[ret;]...} go(c) ...
|
| |
|
| ret;
|
| Return (Rücksprung) aus dem Unterprogramm. Unterbricht das Unterprogramm an beliebiger Stelle. Am Ende des Unterprogramms ist ret; nicht notwendig.
|
| Beispiel:
|
| :c{...[ret;]...} go(c) ... |
|
| |
|
| w(zahl|Var) Warten in ms
|
| Wartefunktion in Millisekunden. Die Programmausführung wird für die Zeit gestoppt. Zahl (0-65535) oder Variable als Parameter. Min. Zeit 10 ms.
|
| Beispiel:
|
| i2=1000; w(i2)......w(2500) |
|
| |
|
| pg(IP) Ping an die IP senden
|
Das Ergebnis wird in der pg Variablen gespeichert. '-1' keine Antwort '>0' Antwortzeit in ms.
Die IP wird gespeichert. Bei zweitem Aufruf und gleicher IP reicht nur pg().
|
| Beispiel:
|
| pg(192.168.0.25) if(pg>0)...//empfangen; |
|
| |
|
| udp(IP,Port,String) UDP String an die IP senden
|
IP z.B.: 192.168.178.85 Port: Zahl|Var. Variablen werden in Int (16Bit) Format umgewandelt String: 'Zeichenkette' [/zahl (ASCII Zeichen)] [Var] [/Var (Variable binär)] /Var - (Variable binär) wandelt die Var nicht in ASCII um, sondern sendet die binär Werte je nach Größe 1-4 Byte: wenn u1=1; wird nicht 49 (ASCII '1') sondern 1 gesendet.
Die IP und Port werden gespeichert. Bei zweitem Aufruf und gleicher IP und Port reicht nur udp('....').
|
| Beispiel: |
| f2=65000; u1=1; udp(192.168.178.85,f2,'test '/u1\42' test weiter')
|
|
|
| String - max. 64 zeichen f1.3 (0-9) - float Nachkommastellen
/Var Bytes gesendet - Big Endian
| \70 /Var
BYTE, Boolean Integer Float
| ASCII-Zeichen (z.B. \70= F) sendet Variable im Binär Format.
1 Byte 2 Bytes
4 Bytes | |
| |
| |
|
| @() E-Mail Adresse
|
Die E-Mail Adresse wird festgelegt. Der Printbuffer wird an die Adresse durch das Befehl p(\@) per E-Mail versendet.
Die E-Mail-Einstellung muss konfiguriert sein (Einstellung/E-Mail).
|
| Beispiel:
|
| @(info@anel-elektronik.de) |
|
| |
|
| p() - Print - Drucken
|
| Es wird in den Printbuffer ausgegeben. Der Printbuffer (1024 Byte) kann oben in der Steuerung angezeigt oder per E-Mail gesendet werden.
|
| p(expr)
|
| expr= '...' [\..][Var]['..']
|
| Beispiel:
|
| p('<tr><td>Version = 'v.1'<td>Temperatur = 't.2'°C')
|
p(h#2':'m#2':'s#2)
|
|
|
Print Buffer = 1024 Byte
f1.3 (0-9) - float Nachkommastellen
i1#3 (0-9) - mit Nullen füllen (nicht float)
String - max. 64 zeichen E-Mail Adress - max. 48 zeichen>
| \b \f \" \' \? \s \\ \70 \p25 \@
| (backspace) = ein Zeichen zurück. (form feed) = Cursor auf Anfang (\p0). = " = ' = ? space (HTML:   oder ). = \ ASCII-Zeichen (z.B. \70= F) position im Buffer E-Mail senden
| |
| |
| | |